const BASE_URL = getApp().globalData.BASE_URL
// const BASE_URL = 'https://artparty.eachigh.com'

let token = null
let request_list = []
let is_login = false

// 登录获取token处理
const login = cb => {
  // 记录所有请求
  request_list.push(cb)
  // 防止重复请求登录
  if (!is_login) {
    is_login = true;
  } else {
    return
  }
  // 登录请求
  wx.login({
    success: function (res) {
      request({
        url: '/api/auth',
        data: {
          code: res.code
        }
      }).then(res => {
        if (res.code == 0) {
          token = res.data.token;
          // 全部请求回调
          request_list.forEach(cb => {
            cb && cb()
          })
          request_list = [];
          is_login = false;
        }
      })
    }
  })
}

// 统一请求封装
const request = obj => {
  return new Promise((resolve, reject) => {
    wx.showNavigationBarLoading()
    //带请求token
    if (token) {
      obj.data = obj.data || {}
      obj.token = token;
    }
    wx.request({
      url: BASE_URL + obj.url,
      data: obj.data,
      method: obj.method || 'POST',
      header: { 'token':obj.token},
      success: function (res) {
        if (res.data.code == 401) {
          //用户身份过期
          login(() => {
            request(obj).then(res => {
              resolve(res)
            })
          })
        } else if (res.data.code == 1000){//没有数据
          // wx.showToast({
          //   title: '没有数据',
          //   icon: 'none',
          //   duration: 2000
          // })
          resolve(res.data);
        } else if (res.data.code != 0) {
          // 请求错误
          reject()
        } else {
          // 成功回调
          // console.log('请求成功', res.data)
          resolve(res.data);
        }
      },
      fail: function (err) {
        reject(err)
      },
      complete: function (res) {
        wx.hideNavigationBarLoading()
      },
    })
  })
}

export default request